package com.cyt.work.repair.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;
import com.cyt.work.repair.model.po.AssetWarranty;
import com.cyt.work.repair.model.vo.AssetWarrantyVo;
import com.cyt.wx.model.po.WxMember;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 资产报修-资产报修Service层接口类
 *
 * @author han jun
 * @date 2019-7-8 15:03:04
 */
public interface AssetWarrantyService extends BaseService<AssetWarranty> {

    /**
     * 分页查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @param pageNum         分页数
     * @param pageSize        每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    ReturnResult findPage(AssetWarrantyVo assetWarrantyVo, int pageNum, int pageSize);

    /**
     * 分页查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @param pageNum         分页数
     * @param pageSize        每页显示条数
     * @return ReturnResult
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    ReturnResult findVoPage(AssetWarrantyVo assetWarrantyVo, int pageNum, int pageSize);

    /**
     * list查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @return List<AssetWarranty>
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    List<AssetWarranty> findList(AssetWarrantyVo assetWarrantyVo);

    /**
     * list查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @return List<AssetWarrantyVo>
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    List<AssetWarrantyVo> findVoList(AssetWarrantyVo assetWarrantyVo);

    /**
     * 单个对象查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @return AssetWarranty
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    AssetWarranty findOne(AssetWarrantyVo assetWarrantyVo);

    /**
     * 单个对象查询
     *
     * @param assetWarrantyVo 接受参数对象
     * @return AssetWarrantyVo
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    AssetWarrantyVo findVoOne(AssetWarrantyVo assetWarrantyVo);

    /**
     * 添加或更新
     *
     * @param assetWarrantyVo 参数接受对象
     * @param wxMember        当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    ReturnResult addOrUpdate(AssetWarrantyVo assetWarrantyVo, WxMember wxMember);


    ReturnResult addOrUpdateNew(AssetWarrantyVo assetWarrantyVo, SysUser currentUser);

    /**
     * 根据条件逻辑删除
     *
     * @param assetWarrantyVo 参数接受对象
     * @param currentUser     当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    ReturnResult remove(AssetWarrantyVo assetWarrantyVo, SysUser currentUser);

    /**
     * 根据条件物理删除
     *
     * @param assetWarrantyVo 参数接受对象
     * @param currentUser     当前用户
     * @return ReturnResult
     * @author han jun
     * @date 2019-7-8 15:03:04
     */
    ReturnResult delete(AssetWarrantyVo assetWarrantyVo, SysUser currentUser);

    /**
     * 数据导出
     *
     * @param response        响应对象
     * @param assetWarrantyVo 接受参数对象
     * @author rong yuan
     * @date 2019/7/11 15:55
     */
    void exportassetWarranty(HttpServletResponse response, AssetWarrantyVo assetWarrantyVo);

    /**
     * 资产报修按月统计
     *
     * @param assetWarrantyVo 接受参数对象
     * @return ReturnResult
     * @author rong yuan
     * @date 2019-08-21 11:51
     */
    ReturnResult statisticsByMonth(AssetWarrantyVo assetWarrantyVo);
}